Data: College Majors by Gender
For this data visualization, a dataset containing information about the gender distribution of different college majors and major areas was obtained from the FiveThirtyEight Github. The dataset (women-stem.csv) contains a list of college majors with their more generalized associated major categories (Engineering, Physical Sciences, Computers & Mathematics, Health, Biology & Life Science), which are from Carnevale et al, “What’s It Worth?: The Economic Value of College Majors.” Georgetown University Center on Education and the Workforce, 2011. http://cew.georgetown.edu/whatsitworth. The dataset also contains information from the American Community Survey 2010-2012 Public Use Microdata Series regarding the total number of men and women in each major during this time frame, as well as a column indicating the proportion of women in each major (ShareWomen). A preview of this dataset is shown below:
df = read.csv('https://raw.githubusercontent.com/fivethirtyeight/data/master/college-majors/women-stem.csv')
head(df)
Data Cleaning (Visualization #1)
To further analyze the gender distribution of different collge major categories, it was necessary to create a column containing the proportion of men in each major (ShareMen). In addition, the dataset was grouped by major category and the average proportion of men and women in each major category was calculated, creating the Total_Men and Total_Women columns, labled as “Female Students” and “Male Students”. The final dataset used for the visualization contained only the Major_Category, Total_Women, and Total_Men columns, as shown below.
library(htmlwidgets)
library('tidyverse')
library('plotly')
library(ggthemes)
library(forcats)
#Create ShareMen Column (Proportion of Men by Major)
df$ShareMen <- with(df,(Men / Total))
#DATA CLEANING: MAJOR CATEGORY BY GENDER (AVERAGE PROPORTION OF MEN vs. WOMEN by MAJOR CATEGORY)
df = df %>% group_by(Major_category) %>% summarise(Total_Women = (mean(ShareWomen)*100), Total_Men = (mean(ShareMen)*100))
head(df)
names(df)[2] <- "Female Students"
names(df)[3] <- "Male Students"
Which Major Categories Have the Most Women?
As shown below, women tend to dominate the health field while the the fields of engineering and computer science & mathematics are largely dominanted by male students.
#PLOT OF MAJOR CATEGORY BY GENDER (AVERAGE PROPORTION OF MEN vs. WOMEN)
knitr::opts_chunk$set(fig.width=10, fig.height=8)
p2 = ggplot(data = df %>% gather(Variable, value, -Major_category),
aes(x = reorder(Major_category, value), y = value, fill = Variable, some_dummy_mapping = value[Variable])) + geom_bar(stat = 'identity', position = 'stack')
p2 = p2 + theme(panel.border = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
p2 = p2 + xlab("Major Category") + ylab("Percent") + ggtitle("Major Category by Gender") + geom_text(aes(label=sprintf("%0.2f", round(value, digits = 2))), position= position_stack(vjust = 0.85), size=3.5) + scale_fill_brewer(palette="Blues") + theme_minimal()+ theme(axis.text.x = element_text(angle = 15, hjust = 1)) + theme(plot.title = element_text(hjust = 0.5)) + theme(legend.title = element_blank())
p2 = p2 + theme(plot.title = element_text(size=14, face="bold.italic"), axis.title.x = element_text(face="bold"),
axis.title.y = element_text(face="bold"))
p2

Data Cleaning (Visualization #2)
Each of these major categories consists of many majors. To further examine which specific college majors are most popular amongst female students and male students, I subsetted the data to only contain the top 10 college majors with the highest proportion of female students as well as the top 10 college majors with the highest proportion of male students. These datasets (named mostwomen and mostmen) as well as their respective barplots showing the gender distributions for these majors are shown below.
r{r pressure, echo=FALSE}
<!-- rnb-source-end -->
<!-- rnb-output-begin eyJkYXRhIjoiRXJyb3I6IGF0dGVtcHQgdG8gdXNlIHplcm8tbGVuZ3RoIHZhcmlhYmxlIG5hbWVcbiJ9 -->
Error: attempt to use zero-length variable name ```
Women in STEM: Conclusion
There has been a large societal push in recent years to encourage and promote Women in STEM (Science, Technology, Engineering, and Mathematics), as research has found many barriers can impede women’s progress in STEM. This includes gender stereotypes and the overall environment of science and engineering departments in colleges and universities. As indicated by the plots above, women make up a large proportion of students in scientific fields related to health and medicine. However, there is still more to be done to increase women participation in the fields of engineering, mathematics, and computer science, as these fields appear dominated by males according to this data.
LS0tCnRpdGxlOiAiQklPUyA1MTIgRGF0YSBWaXN1YWxpemF0aW9uLSBXb21lbiBJbiBTVEVNIgphdXRob3I6ICJMaXogWmFyemFyIgpkYXRlOiAiMTEvMjAvMjAxOSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQpgYGAKCiMjIERhdGE6IENvbGxlZ2UgTWFqb3JzIGJ5IEdlbmRlcgoKRm9yIHRoaXMgZGF0YSB2aXN1YWxpemF0aW9uLCBhIGRhdGFzZXQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ2VuZGVyIGRpc3RyaWJ1dGlvbiBvZiBkaWZmZXJlbnQgY29sbGVnZSBtYWpvcnMgYW5kIG1ham9yIGFyZWFzIHdhcyBvYnRhaW5lZCBmcm9tIHRoZSBGaXZlVGhpcnR5RWlnaHQgR2l0aHViLiBUaGUgZGF0YXNldCAod29tZW4tc3RlbS5jc3YpIGNvbnRhaW5zIGEgbGlzdCBvZiBjb2xsZWdlIG1ham9ycyB3aXRoIHRoZWlyIG1vcmUgZ2VuZXJhbGl6ZWQgYXNzb2NpYXRlZCBtYWpvciBjYXRlZ29yaWVzIChFbmdpbmVlcmluZywgUGh5c2ljYWwgU2NpZW5jZXMsIENvbXB1dGVycyAmIE1hdGhlbWF0aWNzLCBIZWFsdGgsIEJpb2xvZ3kgJiBMaWZlIFNjaWVuY2UpLCB3aGljaCBhcmUgZnJvbSBDYXJuZXZhbGUgZXQgYWwsICJXaGF0J3MgSXQgV29ydGg/OiBUaGUgRWNvbm9taWMgVmFsdWUgb2YgQ29sbGVnZSBNYWpvcnMuIiBHZW9yZ2V0b3duIFVuaXZlcnNpdHkgQ2VudGVyIG9uIEVkdWNhdGlvbiBhbmQgdGhlIFdvcmtmb3JjZSwgMjAxMS4gaHR0cDovL2Nldy5nZW9yZ2V0b3duLmVkdS93aGF0c2l0d29ydGguIFRoZSBkYXRhc2V0IGFsc28gY29udGFpbnMgaW5mb3JtYXRpb24gZnJvbSB0aGUgQW1lcmljYW4gQ29tbXVuaXR5IFN1cnZleSAyMDEwLTIwMTIgUHVibGljIFVzZSBNaWNyb2RhdGEgU2VyaWVzIHJlZ2FyZGluZyB0aGUgdG90YWwgbnVtYmVyIG9mIG1lbiBhbmQgd29tZW4gaW4gZWFjaCBtYWpvciBkdXJpbmcgdGhpcyB0aW1lIGZyYW1lLCBhcyB3ZWxsIGFzIGEgY29sdW1uIGluZGljYXRpbmcgdGhlIHByb3BvcnRpb24gb2Ygd29tZW4gaW4gZWFjaCBtYWpvciAoU2hhcmVXb21lbikuIEEgcHJldmlldyBvZiB0aGlzIGRhdGFzZXQgaXMgc2hvd24gYmVsb3c6CgpgYGB7cn0KZGYgPSByZWFkLmNzdignaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZpdmV0aGlydHllaWdodC9kYXRhL21hc3Rlci9jb2xsZWdlLW1ham9ycy93b21lbi1zdGVtLmNzdicpCmhlYWQoZGYpCmBgYAoKCiMjIERhdGEgQ2xlYW5pbmcgKFZpc3VhbGl6YXRpb24gIzEpCgpUbyBmdXJ0aGVyIGFuYWx5emUgdGhlIGdlbmRlciBkaXN0cmlidXRpb24gb2YgZGlmZmVyZW50IGNvbGxnZSBtYWpvciBjYXRlZ29yaWVzLCBpdCB3YXMgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBhIGNvbHVtbiBjb250YWluaW5nIHRoZSBwcm9wb3J0aW9uIG9mIG1lbiBpbiBlYWNoIG1ham9yIChTaGFyZU1lbikuIEluIGFkZGl0aW9uLCB0aGUgZGF0YXNldCB3YXMgZ3JvdXBlZCBieSBtYWpvciBjYXRlZ29yeSBhbmQgdGhlIGF2ZXJhZ2UgcHJvcG9ydGlvbiBvZiBtZW4gYW5kIHdvbWVuIGluIGVhY2ggbWFqb3IgY2F0ZWdvcnkgd2FzIGNhbGN1bGF0ZWQsIGNyZWF0aW5nIHRoZSBUb3RhbF9NZW4gYW5kIFRvdGFsX1dvbWVuIGNvbHVtbnMsIGxhYmxlZCBhcyAiRmVtYWxlIFN0dWRlbnRzIiBhbmQgIk1hbGUgU3R1ZGVudHMiLiBUaGUgZmluYWwgZGF0YXNldCB1c2VkIGZvciB0aGUgdmlzdWFsaXphdGlvbiBjb250YWluZWQgb25seSB0aGUgTWFqb3JfQ2F0ZWdvcnksIFRvdGFsX1dvbWVuLCBhbmQgVG90YWxfTWVuIGNvbHVtbnMsIGFzIHNob3duIGJlbG93LiAKCmBgYHtyfQpsaWJyYXJ5KCd0aWR5dmVyc2UnKQpsaWJyYXJ5KCdwbG90bHknKQpsaWJyYXJ5KGdndGhlbWVzKQpsaWJyYXJ5KGZvcmNhdHMpCgojQ3JlYXRlIFNoYXJlTWVuIENvbHVtbiAoUHJvcG9ydGlvbiBvZiBNZW4gYnkgTWFqb3IpCmRmJFNoYXJlTWVuIDwtIHdpdGgoZGYsKE1lbiAvIFRvdGFsKSkKCiNEQVRBIENMRUFOSU5HOiBNQUpPUiBDQVRFR09SWSBCWSBHRU5ERVIgKEFWRVJBR0UgUFJPUE9SVElPTiBPRiBNRU4gdnMuIFdPTUVOIGJ5IE1BSk9SIENBVEVHT1JZKQpkZiA9IGRmICU+JSBncm91cF9ieShNYWpvcl9jYXRlZ29yeSkgICU+JSBzdW1tYXJpc2UoVG90YWxfV29tZW4gPSAobWVhbihTaGFyZVdvbWVuKSoxMDApLCBUb3RhbF9NZW4gPSAobWVhbihTaGFyZU1lbikqMTAwKSkKCgpuYW1lcyhkZilbMl0gPC0gIkZlbWFsZSBTdHVkZW50cyIKbmFtZXMoZGYpWzNdIDwtICJNYWxlIFN0dWRlbnRzIgpgYGAKCgojIyBXaGljaCBNYWpvciBDYXRlZ29yaWVzIEhhdmUgdGhlIE1vc3QgV29tZW4/CgpBcyBzaG93biBiZWxvdywgd29tZW4gdGVuZCB0byBkb21pbmF0ZSB0aGUgaGVhbHRoIGZpZWxkIHdoaWxlIHRoZSB0aGUgZmllbGRzIG9mIGVuZ2luZWVyaW5nIGFuZCBjb21wdXRlciBzY2llbmNlICYgbWF0aGVtYXRpY3MgYXJlIGxhcmdlbHkgZG9taW5hbnRlZCBieSBtYWxlIHN0dWRlbnRzLgoKYGBge3J9CiNQTE9UIE9GIE1BSk9SIENBVEVHT1JZIEJZIEdFTkRFUiAoQVZFUkFHRSBQUk9QT1JUSU9OIE9GIE1FTiB2cy4gV09NRU4pCmtuaXRyOjpvcHRzX2NodW5rJHNldChmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9OCkgCnAyID0gZ2dwbG90KGRhdGEgPSBkZiAlPiUgZ2F0aGVyKFZhcmlhYmxlLCB2YWx1ZSwgLU1ham9yX2NhdGVnb3J5KSwgCiAgICAgICBhZXMoeCA9IHJlb3JkZXIoTWFqb3JfY2F0ZWdvcnksIHZhbHVlKSwgeSA9IHZhbHVlLCBmaWxsID0gVmFyaWFibGUsIHNvbWVfZHVtbXlfbWFwcGluZyA9IHZhbHVlW1ZhcmlhYmxlXSkpICsgZ2VvbV9iYXIoc3RhdCA9ICdpZGVudGl0eScsIHBvc2l0aW9uID0gJ3N0YWNrJykKcDIgPSBwMiArICB0aGVtZShwYW5lbC5ib3JkZXIgPSBlbGVtZW50X2JsYW5rKCksCiAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwKICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSAKcDIgPSBwMiArIHhsYWIoIk1ham9yIENhdGVnb3J5IikgKyB5bGFiKCJQZXJjZW50IikgKyBnZ3RpdGxlKCJNYWpvciBDYXRlZ29yeSBieSBHZW5kZXIiKSArICBnZW9tX3RleHQoYWVzKGxhYmVsPXNwcmludGYoIiUwLjJmIiwgcm91bmQodmFsdWUsIGRpZ2l0cyA9IDIpKSksIHBvc2l0aW9uPSBwb3NpdGlvbl9zdGFjayh2anVzdCA9IDAuODUpLCBzaXplPTMuNSkgKyBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJCbHVlcyIpICsgdGhlbWVfbWluaW1hbCgpKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDE1LCBoanVzdCA9IDEpKSArIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKSArIHRoZW1lKGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSkKCnAyID0gcDIgKyB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MTQsIGZhY2U9ImJvbGQuaXRhbGljIiksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChmYWNlPSJib2xkIiksCmF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChmYWNlPSJib2xkIikpIApwMgpgYGAKCgojIyBEYXRhIENsZWFuaW5nIChWaXN1YWxpemF0aW9uICMyKQoKRWFjaCBvZiB0aGVzZSBtYWpvciBjYXRlZ29yaWVzIGNvbnNpc3RzIG9mIG1hbnkgbWFqb3JzLiBUbyBmdXJ0aGVyIGV4YW1pbmUgd2hpY2ggc3BlY2lmaWMgY29sbGVnZSBtYWpvcnMgYXJlIG1vc3QgcG9wdWxhciBhbW9uZ3N0IGZlbWFsZSBzdHVkZW50cyBhbmQgbWFsZSBzdHVkZW50cywgSSBzdWJzZXR0ZWQgdGhlIGRhdGEgdG8gb25seSBjb250YWluIHRoZSB0b3AgMTAgY29sbGVnZSBtYWpvcnMgd2l0aCB0aGUgaGlnaGVzdCBwcm9wb3J0aW9uIG9mIGZlbWFsZSBzdHVkZW50cyBhcyB3ZWxsIGFzIHRoZSB0b3AgMTAgY29sbGVnZSBtYWpvcnMgd2l0aCB0aGUgaGlnaGVzdCBwcm9wb3J0aW9uIG9mIG1hbGUgc3R1ZGVudHMuIFRoZXNlIGRhdGFzZXRzIChuYW1lZCBtb3N0d29tZW4gYW5kIG1vc3RtZW4pIGFzIHdlbGwgYXMgdGhlaXIgcmVzcGVjdGl2ZSBiYXJwbG90cyBzaG93aW5nIHRoZSBnZW5kZXIgZGlzdHJpYnV0aW9ucyBmb3IgdGhlc2UgbWFqb3JzIGFyZSBzaG93biBiZWxvdy4gCgpgYGB7cn0KCiNDT0xMRUdFIE1BSk9SUyBXSVRIIEhJR0hFU1QgUFJPUE9SVElPTiBPRiBXT01FTiAoVE9QIFdPTUVOJ1MgQ09MTEVHRSBNQUpPUlMpCmtuaXRyOjpvcHRzX2NodW5rJHNldChmaWcud2lkdGg9MTIsIGZpZy5oZWlnaHQ9OCkgCmRmID0gcmVhZC5jc3YoJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9maXZldGhpcnR5ZWlnaHQvZGF0YS9tYXN0ZXIvY29sbGVnZS1tYWpvcnMvd29tZW4tc3RlbS5jc3YnKQojQ3JlYXRlIFNoYXJlTWVuIENvbHVtbiAoUHJvcG9ydGlvbiBvZiBNZW4gYnkgTWFqb3IpCgpkZiRTaGFyZVdvbWVuID0gd2l0aChkZiwoU2hhcmVXb21lbioxMDApKQpkZiRTaGFyZU1lbiA9IHdpdGgoZGYsKE1lbi8gVG90YWwpKjEwMCkKCm1vc3R3b21lbiA9IHRvcF9uKGRmLCBuPTEwLFNoYXJlV29tZW4pIAptb3N0d29tZW4gPSBtb3N0d29tZW5bIC1jKDEsMiw0LDUsNiw3LDkpXQoKbmFtZXMobW9zdHdvbWVuKVsyXSA8LSAiRmVtYWxlIFN0dWRlbnRzIgpuYW1lcyhtb3N0d29tZW4pWzNdIDwtICJNYWxlIFN0dWRlbnRzIgpwcmludChtb3N0d29tZW4pCgojQ09MTEVHRSBNQUpPUlMgV0lUSCBISUdIRVNUIFBST1BPUlRJT04gT0YgTUVOIChUT1AgTUVOJ1MgQ09MTEVHRSBNQUpPUlMpCm1vc3RtZW4gPSB0b3BfbihkZiwgbj0xMCxTaGFyZU1lbikKbW9zdG1lbiA9IG1vc3RtZW5bIC1jKDEsMiw0LDUsNiw3LDkpXQoKbmFtZXMobW9zdG1lbilbMl0gPC0gIkZlbWFsZSBTdHVkZW50cyIKbmFtZXMobW9zdG1lbilbM10gPC0gIk1hbGUgU3R1ZGVudHMiCnByaW50KG1vc3RtZW4pCmBgYApgYGB7cn0KCiNUT1AgV09NRU4nUyBDT0xMRUdFIE1BSk9SUyBQTE9UCnAzID0gcDIgPSBnZ3Bsb3QoZGF0YSA9IG1vc3R3b21lbiAlPiUgZ2F0aGVyKFZhcmlhYmxlLCB2YWx1ZSwgLU1ham9yKSwgCiAgICAgICBhZXMoeCA9IHJlb3JkZXIoTWFqb3IsIHZhbHVlKSwgeSA9IHZhbHVlLCBmaWxsID0gVmFyaWFibGUsIHNvbWVfZHVtbXlfbWFwcGluZyA9IHZhbHVlW1ZhcmlhYmxlXSkpICsgZ2VvbV9iYXIoc3RhdCA9ICdpZGVudGl0eScsIHBvc2l0aW9uID0gJ3N0YWNrJykKcDMgPSBwMyArICB0aGVtZShwYW5lbC5ib3JkZXIgPSBlbGVtZW50X2JsYW5rKCksCiAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwKICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSAKcDMgPSBwMyArIHhsYWIoIk1ham9yIENhdGVnb3J5IikgKyB5bGFiKCJQZXJjZW50IikgKyBnZ3RpdGxlKCJUT1AgQ09MTEVHRSBNQUpPUlMgRkVNQUxFIFNUVURFTlRTIikgKyAgZ2VvbV90ZXh0KGFlcyhsYWJlbD1zcHJpbnRmKCIlMC4yZiIsIHJvdW5kKHZhbHVlLCBkaWdpdHMgPSAyKSkpLCBwb3NpdGlvbj0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjgpLCBzaXplPTMuNSkgKyBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJCbHVlcyIpICsgdGhlbWVfbWluaW1hbCgpKyB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSkgKyB0aGVtZShsZWdlbmQudGl0bGUgPSBlbGVtZW50X2JsYW5rKCkpICsgY29vcmRfZmxpcCgpCgpwMyA9IHAzICsgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplPTE0LCBmYWNlPSJib2xkLml0YWxpYyIpLCBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoZmFjZT0iYm9sZCIpLApheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoZmFjZT0iYm9sZCIpKSAKcDMgPSBnZ3Bsb3RseShwMywgdG9vbHRpcCA9IGMoInZhbHVlIikpICU+JSBhc193aWRnZXQoKSAKcDMKCiNUT1AgTUVOJ1MgQ09MTEVHRSBNQUpPUlMgUExPVAoKcDQgPSBnZ3Bsb3QoZGF0YSA9IG1vc3RtZW4gJT4lIGdhdGhlcihWYXJpYWJsZSwgdmFsdWUsIC1NYWpvciksIAogICAgICAgYWVzKHggPSByZW9yZGVyKE1ham9yLCB2YWx1ZSksIHkgPSB2YWx1ZSwgZmlsbCA9IFZhcmlhYmxlLCBzb21lX2R1bW15X21hcHBpbmcgPSB2YWx1ZVtWYXJpYWJsZV0pKSArIGdlb21fYmFyKHN0YXQgPSAnaWRlbnRpdHknLCBwb3NpdGlvbiA9ICdzdGFjaycpCgpwNCA9IHA0ICsgIHRoZW1lKHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfYmxhbmsoKSwKICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLAogIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpIApwNCA9IHA0ICsgeGxhYigiTWFqb3IgQ2F0ZWdvcnkiKSArIHlsYWIoIlBlcmNlbnQiKSArIGdndGl0bGUoIlRPUCBDT0xMRUdFIE1BSk9SUyBNQUxFIFNUVURFTlRTIikgKyAgZ2VvbV90ZXh0KGFlcyhsYWJlbD1zcHJpbnRmKCIlMC4yZiIsIHJvdW5kKHZhbHVlLCBkaWdpdHMgPSAyKSkpLCBwb3NpdGlvbj0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjgpLCBzaXplPTMuNSkgKyBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJCbHVlcyIpICsgdGhlbWVfbWluaW1hbCgpICsgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDMpKSArIHRoZW1lKGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfYmxhbmsoKSkgKyBjb29yZF9mbGlwKCkKCnA0ID0gcDQgKyB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9MTQsIGZhY2U9ImJvbGQuaXRhbGljIiksIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChmYWNlPSJib2xkIiksCmF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChmYWNlPSJib2xkIikpCnA0ID0gZ2dwbG90bHkocDQsIHRvb2x0aXAgPSBjKCJ2YWx1ZSIpKSAlPiUgYXNfd2lkZ2V0KCkKcDQKCmBgYAoKIyMgV29tZW4gaW4gU1RFTTogQ29uY2x1c2lvbiAKClRoZXJlIGhhcyBiZWVuIGEgbGFyZ2Ugc29jaWV0YWwgcHVzaCBpbiByZWNlbnQgeWVhcnMgdG8gZW5jb3VyYWdlIGFuZCBwcm9tb3RlIFdvbWVuIGluIFNURU0gKFNjaWVuY2UsIFRlY2hub2xvZ3ksIEVuZ2luZWVyaW5nLCBhbmQgTWF0aGVtYXRpY3MpLCBhcyByZXNlYXJjaCBoYXMgZm91bmQgbWFueSBiYXJyaWVycyBjYW4gaW1wZWRlIHdvbWVuJ3MgcHJvZ3Jlc3MgaW4gU1RFTS4gVGhpcyBpbmNsdWRlcyBnZW5kZXIgc3RlcmVvdHlwZXMgYW5kIHRoZSBvdmVyYWxsIGVudmlyb25tZW50IG9mIHNjaWVuY2UgYW5kIGVuZ2luZWVyaW5nIGRlcGFydG1lbnRzIGluIGNvbGxlZ2VzIGFuZCB1bml2ZXJzaXRpZXMuIEFzIGluZGljYXRlZCBieSB0aGUgcGxvdHMgYWJvdmUsIHdvbWVuIG1ha2UgdXAgYSBsYXJnZSBwcm9wb3J0aW9uIG9mIHN0dWRlbnRzIGluIHNjaWVudGlmaWMgZmllbGRzIHJlbGF0ZWQgdG8gaGVhbHRoIGFuZCBtZWRpY2luZS4gSG93ZXZlciwgdGhlcmUgaXMgc3RpbGwgbW9yZSB0byBiZSBkb25lIHRvIGluY3JlYXNlIHdvbWVuIHBhcnRpY2lwYXRpb24gaW4gdGhlIGZpZWxkcyBvZiBlbmdpbmVlcmluZywgbWF0aGVtYXRpY3MsIGFuZCBjb21wdXRlciBzY2llbmNlLCBhcyB0aGVzZSBmaWVsZHMgYXBwZWFyIGRvbWluYXRlZCBieSBtYWxlcyBhY2NvcmRpbmcgdG8gdGhpcyBkYXRhLiAKCgoKCg==